package com.wxg.utils;

import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

/**
 * 
 * Add: 2018-2-5
 * 将内容输出到文件
 * 
 * @author Wxg
 *
 */
public class MyFileWriter {
	
	private String filepath;
	
	/**
	 * Update: 2018年2月7日
	 * 为什么要static呢?
	 * "static"导致了一个问题, 去除static后, 程序就正常了!
	 * -	* 出错处的提示是, "Stream is closed". 这显然是因为static的缘故`if(null == writer) writer = new ...`没有生效！
	 * -	* 说不定判断条件改为`if(null == writer || writer.isClosed())`会有效. (没有测试,直接去除static就好了)
	 * -	* 
	 * 这让我想起了2013年在华为B区夏亮、史湘勇、孙亮做事时的事情,也是因为static的缘故……
	 * 看来我还是没搞明白static的用法啊,这算是个重新拾起旧知识的时刻. 牢记这个案例
	 */
//	private static BufferedWriter wrtier = null;
	private BufferedWriter wrtier = null;
	
	/**
	 * Add 2018-2-6
	 * 
	 */
	public MyFileWriter(){
		this.filepath = My.conf("htmlStoreDir") + My.SP + My.ss() + ".html";
	}
	
	/**
	 * Add 2018年2月7日
	 * 这个类只能专用了: 不能指定`filepath`, 后缀只能是".html"
	 * 
	 * @param prefix
	 */
	public MyFileWriter(String prefix){
		this.filepath = My.conf("htmlStoreDir") + My.SP + My.ss(prefix) + ".html";;
	}
	
//	public MyFileWriter(String filepath){
//		this.filepath = filepath;
//	}
//	
//	public MyFileWriter(String prefix, String filepath){
//		this.filepath = filepath;
//	}
	
	public void write(String str){
		if(null == wrtier){
			try {
				wrtier = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filepath), "UTF-8"));
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		try {
			wrtier.write(str);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void writeb(String str){
		if(null == wrtier){
			try {
				wrtier = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filepath), "UTF-8"));
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		try {
			wrtier.write(str);
			wrtier.newLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void close(){
		if(null != wrtier){
			try {
				wrtier.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * Add 2018-2-6
	 * 
	 * @return
	 */
	public String getFilepath() {
		return filepath;
	}
	
	
}
